#include<stdio.h>
#include<unistd.h>
#include<string.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>

int main()
{
    

    //stdin,stdout,stderr ->FILE* ->内部有没有fd呢？绝对有->怎么证明？
    printf("stdin:%d\n",stdin->_fileno);
    printf("stdout:%d\n",stdout->_fileno);
    printf("stderr:%d\n",stderr->_fileno);
   // char input[16];
   // ssize_t s = read(0,input,sizeof(input));
   // if(s > 0)
   // {
   //     input[s] = '\0';
   //     printf("%s\n",input);
   // }

    //int a = 10;
    //fscanf(stdin,"%d",&a);
    //printf("%d\n",a);

    //fprintf(stdout,"hello stdout\n");
    //const char *s = "hello 1\n";
    //write(1,s,strlen(s));
}





//int main()
//{
//    umask(0);
//    //fopen("log.txt","w");
//    //int fd = open("log.txt",O_WRONLY|O_CREAT|O_TRUNC,0666);//rw-rw-rw-
//    //int fd = open("log.txt",O_WRONLY);//如果文件已经存在就用两个参数的,是默认有这个文件
//    //fopen("log.txt","a"); 
//    //int fd = open("log.txt",O_RDONLY);//rw-rw-rw-
//    int fd1 = open("log1.txt",O_WRONLY|O_CREAT|O_APPEND,0666);//rw-rw-rw-
//    printf("open success, fd1: %d\n",fd1);
//    int fd2 = open("log2.txt",O_WRONLY|O_CREAT|O_APPEND,0666);//rw-rw-rw-
//    printf("open success, fd2: %d\n",fd2);
//    int fd3 = open("log3.txt",O_WRONLY|O_CREAT|O_APPEND,0666);//rw-rw-rw-
//    printf("open success, fd3: %d\n",fd3);
//    int fd4 = open("log4.txt",O_WRONLY|O_CREAT|O_APPEND,0666);//rw-rw-rw-
//    printf("open success, fd4: %d\n",fd4);
//    //if(fd < 0)
//    //{
//    //    perror("open");
//    //    return 1;
//    //}
//
//    //char buffer[64];
//    //memset(buffer,'\0',sizeof(buffer));
//    //read(fd,buffer,sizeof(buffer));      
//    //printf("%s",buffer); 
//    //const char *s = "hello write\n";
//    //const char *s = "aa\n";
//    //write(fd,s,strlen(s)); //不需要+1，C需要，
//    //open success
//   
//    close(fd1);
//    close(fd2);
//    close(fd3);
//    close(fd4);
//    return 0;
//}













//用int中地不重复的一个比特位，就可以标识一种状态
//#define ONE 0x1  //0000 0001
//#define TWO 0x2  //0000 0010
//#define THREE 0x4  //0000 0100
//
//void show(int flags)
//{
//   if(flags & ONE) printf("hello one\n");
//   if(flags & TWO) printf("hello two\n");
//   if(flags & THREE) printf("hello three\n");
//}
//
//
//int main()
//{
//     show(ONE);
//     printf("-----------------------------------\n");
//     show(TWO);
//     printf("-----------------------------------\n");
//     show(ONE | TWO); //000 0001 | 0000 0010 = 0000 0011
//     printf("-----------------------------------\n");
//     show(ONE | TWO | THREE);
//     printf("-----------------------------------\n");
//     return 0;
//}




//myfile一个文件名
//int main(int argc,char *argv[])
//{
//    if(argc != 2)
//    {
//        printf("argv error!\n");
//        return 1;
//    }
//    FILE *fp = fopen(argv[1],"r");
//    if(fp == NULL)
//    {
//        //strerror
//        perror("fopen");
//        return 2;
//    }
//
//    //按行读取
//    char line[64];
//    //fgets -> C -> s(string) -> 会自动再字符结尾添加\0
//    while(fgets(line,sizeof(line),fp) != NULL)
//    {
//        //printf("%s",line);
//        fprintf(stdout,"%s",line); //
//    }
    //进行文件操作
    //对文件进行写操作
    //const char *s1 = "hello fwrite 111\n";//要不要+1，不需要因为\0结尾是C的规定，文件不要遵循，文件要保存的是有效数据！
    //fwrite(s1,strlen(s1),1,fp);

    //const char *s2 = "hello fprintf\n";
    //fprintf(fp,"%s",s2);

    //const char *s3 = "hello fputs\n";
    //fputs(s3,fp);


//    fclose(fp);

//    return 0;
//}
